#include <Arduino.h>

// 26管脚是dac数模转换出口
// 34管脚是adc外部信号入口。
// 将这两个管脚相连，可以测试两个管脚的输出

void toSin();
void toSquare();

float i = 0;

void setup()
{
  Serial.begin(115200);

  pinMode(23, OUTPUT);
}

void loop()
{
  // toSin();

  // 方波信号
  toSquare();
}
// 正弦波信号, 只有DAC的接口才可以输出这种曲线， pin 25，26
// 这里将26与34脚关联
void toSin()
{
  // [-1,1] => [0,256]
  float val = sin(i);
  i += 0.5;
  int out = int(val * 128 + 128);

  // dac 范围 8位 [0,255]
  dacWrite(26, out);

  // analogRead范围 12位 [0,4095]
  int in34 = analogRead(34);

  in34 = (256.0 / 4096.0) * in34;
  Serial.printf("%d, %d\n", out, in34);

  delay(100);
}

// 方波信号，所以管脚均可实现方波，但是接收这种信号只有ADC的才行
// // 这里将23,33脚关联

int out23 = 1;
void toSquare()
{
  digitalWrite(23, out23);

  // 采样
  int in33 = 0;
  for (int i = 0; i < 100; i++)
  {
    in33 = analogRead(33);
    Serial.printf("%d, %d\n", out23, in33);
    delay(1);
  }

  out23 = !out23;
}
